package com.itheima.health.dao;

import com.github.pagehelper.Page;
import com.itheima.health.pojo.Menu;
import com.itheima.health.pojo.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @Author likepei
 * @Date 2020/2/19 10:43
 * @Version v1.0
 * @Description 用户的持久层接口
 */
public interface UserDao {
    /**
     * 通过用户名 查询指定的用户信息
     * @param username
     * @return
     */
    User findByUsername(@Param("username") String username);


    /*
    * 分页查询
    * */
    Page<User> selectByCondition(@Param("queryString") String queryString);

    /*
    * 添加用户
    * */
    void add(User user);

    /*
    * 把新增用户id 与 当前的角色Id 保存到中间表
    * */
    void addUserAndrole(Map<String, Integer> map);

    /*
    * 根据ID获取用户数据
    * */
    User findById(Integer id);

    /*
    * 根据用户ID获取选中的角色列表
    * */
    List<Integer> findRoleIdsByUserId(Integer id);

    /*
    * 编辑用户
    * */
    void edit(User user);

    /*
    * 删除用户 旧的依赖关系( 用户与勾选的角色的关系 [从中间表删除数据] )
    * */
    void deleteUserAndRole(Integer id);

    /*
    * 判断当前用户 在中间表中 是否被引用
    * */
    int findCountInuserAndrole(Integer id);

    /*
    * 删除用户
    * */
    void delete(Integer id);



    List<Integer> getRoleId(String username);

    List<Integer> findRoleAndMenuId(List<Integer> roleIds);

    List<Menu> getMenuList(List<Integer> menuId);

    List<Menu> getChildren(Integer id);
}
